#ifndef MODELS_H_JM_20130125
#define MODELS_H_JM_20130125

namespace jm4bbx {
	
	struct InputBoxConfiguration;
	// aritm. op.

	std::string getIntAdditionModel(int parallelismLevel, 
		const std::string& lineEnd);


	// agregacne funkcie

	std::string getSumModel(int parallelismLevel, 
		const std::string& lineEnd);

	std::string getMinModel(int parallelismLevel, 
		const std::string& lineEnd);

	std::string getMaxModel(int parallelismLevel, 
		const std::string& lineEnd);

	std::string getAvgModel(int parallelismLevel, 
		const std::string& lineEnd);

	std::string getIntAdditionModel(int parallelismLevel, 
		const std::string& lineEnd);
	// 1 step

	std::string getStrHDEliminationModel(int parallelismLevel, 
		const std::string& lineEnd);

	// 2 step

	std::string getStrHDHashJoinModel(int parallelismLevel, 
		const std::string& lineEnd);

	std::string getStrHDHashIntersectionModel(int parallelismLevel, 
		const std::string& lineEnd, bool isInt, bool isBagVersion);


	std::string getHDHashSecondSubtractionModel(int parallelismLevel, 
		const std::string& lineEnd, bool isInt, bool bagVersion);

	// 3 step

	std::string getHDHashFirstSubtractionModel(int parallelismLevel, 
		const std::string& lineEnd, bool isInt, bool bagVersion);


} // namespace jm4bbx

#endif
